# 任务详情
# 给定内地某日票房排行榜，输入指定影片名称movie_name，如：'金刚川'。完成以下任务：

# 1. 任务一：获取指定影片的上映天数。如“金刚川”上映20天，返回20；“一日成交”上映首日，返回0，“翱翔雄心”点映，返回-1

# 2. 任务二：获取指定影片的综合票房（万元）。如“金刚川”，返回432.33

# 3. 任务三：获取指定影片的排片占比。如“金刚川”，返回0.248

# 任务要求
# 1. 程序接收str类型的变量movie_name，返回list类型的变量

# 2. 返回列表包含参数如下：[任务一：int, 任务二：float，任务三：float]

# 3. 任务一中，如果是上映天数是“上映首日”，返回0；如果上映天数是“点映”，返回-1

# 4. 任务三中需要将百分比形式转换为小数点形式。如'24.8%'需要转换为0.248；如果票房<0.1%，返回0.001

# 5. 票房信息排行榜在下方给出，utf-8编码

# 测试用例
# 输入：'金刚川'
# 输出：[20, 431.33, 0.248]


# 输入：'半条棉被'
# 输出：[69, 2.54, 0.001]
# 
# 链接：http://72.itmc.org.cn:80/JS001/open/show/box_office_on_a_certain_day.html
# 
# 
# 1.运行或提交代码不需要自己编写测试用例，后台自动进行测试检查。
# 2.您编写代码的区域可以不限定在类或者函数体内，保证输入与输出符合任务要求即可。
# 3.点击“运行代码”按钮，可以查看程序设计是否正确，运行次数越多，任务得分越低。
# 4.点击“提交代码”按钮，系统将保存代码，并记录任务数据。
# 5.点击右上方“结束任务”按钮，系统将在后台计算任务得分，任务结束。
# -*- coding: utf-8 -*- 
import re
import jieba

import bs4
import requests


class Solution:
    def BoxOfficeSpider(self, movie_name: str) -> list:
        url = "http://72.itmc.org.cn:80/JS001/open/show/box_office_on_a_certain_day.html"
        res = requests.get(url)
        res.encoding = 'utf-8'
        list1 = []
        data = bs4.BeautifulSoup(res.text, "html.parser")
        tbody = data.find_all("tbody")[0]
        td = tbody.find_all("td", "tbody-col-name")
        for i in td:
            p = i.find_all('p', "movie-name")
            if p[0].text == movie_name:
                day = i.find_all('span', 'releaseInfo')
                if day[0].text[:2] == "点映":
                    list1.append(-1)
                elif day[0].text[2:] == "首日":
                    list1.append(0)
                else:
                    list1.append(int(day[0].text[2:-1]))
                zonghe = i.find_all("div", "boxDesc-wrap")
                list1.append(float(zonghe[0].text))
                paipian = i.find_all("div", "countRate-wrap")
                if paipian[0].text == "<0.1%":
                    list1.append(0.001)
                else:
                    list1.append(round(float(paipian[0].text.replace("%", "")) / 100, 3))
        return list1


print(Solution.BoxOfficeSpider(Solution, "一日成交"))
